package br.com.orion.sga.model.entities;

// Generated Jul 19, 2014 6:45:05 PM by Hibernate Tools 3.4.0.CR1

import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * Aluno generated by hbm2java
 */
@Entity
@Table(name = "aluno", catalog = "sga")
public class Aluno implements java.io.Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -878847543165272917L;
	private long id;
	private Vencimento vencimento;
	private Cidade cidade;
	private Empresa empresas;
	private Responsavel responsavel;
	private PlanoPagamento planoPagamento;
	private String nome;
	private String endereco;
	private String numero;
	private String bairro;
	private Date dataNascimento;
	private String cpf;
	private String rg;
	private String tel;
	private String cel;
	private String imagem;
	private Character sexo;
	private Float valorMensalidade;
	private Float valorPersonal;
	/*	The attribute isTheResponsible is not needed. I can to validate this information trough of responsavel attribute
	 *	private boolean isTheResponsible;
	 */
	private Set<MovimentacaoCaixa> movimentacaoCaixas = new HashSet<MovimentacaoCaixa>(
			0);
	private Set<PeriodoLiberacao> periodoLiberacaos = new HashSet<PeriodoLiberacao>(
			0);
	private Set<AvaliacaoFisica> avaliacaoFisicas = new HashSet<AvaliacaoFisica>(
			0);

	public Aluno() {
	}

	public Aluno(long id, Vencimento vencimento, Cidade cidade,
			Empresa empresas, Responsavel responsavel,
			PlanoPagamento planoPagamento, String nome/*, boolean isTheResponsible*/) {
		this.id = id;
		this.vencimento = vencimento;
		this.cidade = cidade;
		this.empresas = empresas;
		this.responsavel = responsavel;
		this.planoPagamento = planoPagamento;
		this.nome = nome;
		//this.isTheResponsible = isTheResponsible;
	}

	public Aluno(long id, Vencimento vencimento, Cidade cidade,
			Empresa empresas, Responsavel responsavel,
			PlanoPagamento planoPagamento, String nome, String endereco,
			String numero, Date dataNascimento, String cpf, String rg,
			String tel, String cel, String imagem, Character sexo,
			Float valorMensalidade, Float valorPersonal,
			/*boolean isTheResponsible,*/
			Set<MovimentacaoCaixa> movimentacaoCaixas,
			Set<PeriodoLiberacao> periodoLiberacaos,
			Set<AvaliacaoFisica> avaliacaoFisicas) {
		this.id = id;
		this.vencimento = vencimento;
		this.cidade = cidade;
		this.empresas = empresas;
		this.responsavel = responsavel;
		this.planoPagamento = planoPagamento;
		this.nome = nome;
		this.endereco = endereco;
		this.numero = numero;
		this.dataNascimento = dataNascimento;
		this.cpf = cpf;
		this.rg = rg;
		this.tel = tel;
		this.cel = cel;
		this.imagem = imagem;
		this.sexo = sexo;
		this.valorMensalidade = valorMensalidade;
		this.valorPersonal = valorPersonal;
		//this.isTheResponsible = isTheResponsible;
		this.movimentacaoCaixas = movimentacaoCaixas;
		this.periodoLiberacaos = periodoLiberacaos;
		this.avaliacaoFisicas = avaliacaoFisicas;
	}

	@Id
	@Column(name = "id", unique = true, nullable = false)
	@GeneratedValue(strategy=GenerationType.AUTO)
	public long getId() {
		return this.id;
	}

	public void setId(long id) {
		this.id = id;
	}

	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "id_vencimento", nullable = false)
	public Vencimento getVencimento() {
		return this.vencimento;
	}

	public void setVencimento(Vencimento vencimento) {
		this.vencimento = vencimento;
	}

	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "id_cidade", nullable = false)
	public Cidade getCidade() {
		return this.cidade;
	}

	public void setCidade(Cidade cidade) {
		this.cidade = cidade;
	}

	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "id_empresa", nullable = false)
	public Empresa getEmpresas() {
		return this.empresas;
	}

	public void setEmpresas(Empresa empresas) {
		this.empresas = empresas;
	}

	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "id_responsavel", nullable = false)
	public Responsavel getResponsavel() {
		return this.responsavel;
	}

	public void setResponsavel(Responsavel responsavel) {
		this.responsavel = responsavel;
	}

	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "id_plano_pagamento", nullable = false)
	public PlanoPagamento getPlanoPagamento() {
		return this.planoPagamento;
	}

	public void setPlanoPagamento(PlanoPagamento planoPagamento) {
		this.planoPagamento = planoPagamento;
	}

	@Column(name = "nome", nullable = false, length = 100)
	public String getNome() {
		return this.nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	@Column(name = "endereco", length = 70)
	public String getEndereco() {
		return this.endereco;
	}

	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}

	@Column(name = "numero", length = 10)
	public String getNumero() {
		return this.numero;
	}

	public void setNumero(String numero) {
		this.numero = numero;
	}
	
	@Column(name="bairro", length = 40)
	public String getBairro() {
		return bairro;
	}
	
	public void setBairro(String bairro) {
		this.bairro = bairro;
	}

	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "data_nascimento", length = 0)
	public Date getDataNascimento() {
		return this.dataNascimento;
	}

	public void setDataNascimento(Date dataNascimento) {
		this.dataNascimento = dataNascimento;
	}

	@Column(name = "cpf", length = 15)
	public String getCpf() {
		return this.cpf;
	}

	public void setCpf(String cpf) {
		this.cpf = cpf;
	}

	@Column(name = "rg", length = 15)
	public String getRg() {
		return this.rg;
	}

	public void setRg(String rg) {
		this.rg = rg;
	}

	@Column(name = "tel", length = 15)
	public String getTel() {
		return this.tel;
	}

	public void setTel(String tel) {
		this.tel = tel;
	}

	@Column(name = "cel", length = 15)
	public String getCel() {
		return this.cel;
	}

	public void setCel(String cel) {
		this.cel = cel;
	}

	@Column(name = "imagem", length = 65535)
	public String getImagem() {
		return this.imagem;
	}

	public void setImagem(String imagem) {
		this.imagem = imagem;
	}

	@Column(name = "sexo", length = 1)
	public Character getSexo() {
		return this.sexo;
	}

	public void setSexo(Character sexo) {
		this.sexo = sexo;
	}

	@Column(name = "valor_mensalidade", precision = 12, scale = 0)
	public Float getValorMensalidade() {
		return this.valorMensalidade;
	}

	public void setValorMensalidade(Float valorMensalidade) {
		this.valorMensalidade = valorMensalidade;
	}

	@Column(name = "valor_personal", precision = 12, scale = 0)
	public Float getValorPersonal() {
		return this.valorPersonal;
	}

	public void setValorPersonal(Float valorPersonal) {
		this.valorPersonal = valorPersonal;
	}

//	@Column(name = "isTheResponsible", nullable = false)
//	public boolean isIsTheResponsible() {
//		return this.isTheResponsible;
//	}

//	public void setIsTheResponsible(boolean isTheResponsible) {
//		this.isTheResponsible = isTheResponsible;
//	}

	@OneToMany(fetch = FetchType.EAGER, mappedBy = "aluno")
	public Set<MovimentacaoCaixa> getMovimentacaoCaixas() {
		return this.movimentacaoCaixas;
	}

	public void setMovimentacaoCaixas(Set<MovimentacaoCaixa> movimentacaoCaixas) {
		this.movimentacaoCaixas = movimentacaoCaixas;
	}

	@OneToMany(fetch = FetchType.EAGER, mappedBy = "aluno")
	public Set<PeriodoLiberacao> getPeriodoLiberacaos() {
		return this.periodoLiberacaos;
	}

	public void setPeriodoLiberacaos(Set<PeriodoLiberacao> periodoLiberacaos) {
		this.periodoLiberacaos = periodoLiberacaos;
	}

	@OneToMany(fetch = FetchType.EAGER, mappedBy = "aluno")
	public Set<AvaliacaoFisica> getAvaliacaoFisicas() {
		return this.avaliacaoFisicas;
	}

	public void setAvaliacaoFisicas(Set<AvaliacaoFisica> avaliacaoFisicas) {
		this.avaliacaoFisicas = avaliacaoFisicas;
	}

}
